package classic;

import java.util.Arrays;

/**
 * 把一个整数数组的所有奇数放在偶数前面
 * 看到这个题目就想到了快排，快排每一次比较把小于基准数的元素放在基准数左边，
 * 大于它的放在右边
 * 这个题目类似，只不过比较的不是基准数
 * 用两个指针，第一个i指向数组头，第二个j指向数组尾
 * 然后向后移动i指针，找到第一个偶数，向前移动j指针，找到第一个奇数，将他们交换，
 * 依次循环，知道i指针和j指针指向同一个位置
 *
 * @author zj
 */
public class OddBeforeEvenNumber {
    public static void main(String[] args) {
        int arr[] = {2, 3, 5, 11, 4, 0, 9, 8, 7};
        solution(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void solution(int arr[]) {
        if (arr == null || arr.length < 2) {
            return;
        }
        int i = 0;
        int j = arr.length - 1;
        while (i != j) {
            while (i < j && (arr[i] & 1) == 1) {
                i++;
            }
            while (i < j && (arr[j] & 1) == 0) {
                j--;
            }
            if (i < j) {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
